﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations;
using System.Collections;
using MvcLibrary;
using MvcLibrary.Repository;
namespace WebVideo.Areas.Admin.Models
{
    public class BusinessModel
    {
        [Required(ErrorMessage = "Username không được rỗng")]
        [StringLength(20, ErrorMessage = "Username phải ít hơn {1} kí tự và lớn hơn {2} kí tự", MinimumLength =3)]
        public string UserName { get; set; }

        [DataType(DataType.Password)]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Password không được rỗng!")]
        [StringLength(20, MinimumLength = 6, ErrorMessage = "Password phải lớn hơn 6 và nhỏ hơn 20 ký tự")]
        public string Pass{ get; set; }

        [DataType(DataType.Password)]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Password nhập lại không được rỗng")]
        [Compare("Pass", ErrorMessage = "Password không trùng nhau")]
        public string ConfirmPassword { get; set; }

        [Required(ErrorMessage = "Tên doanh nghiệp không được rỗng")]
        public string CompanyName { get; set; }

        [Required(ErrorMessage = "Please browse your image")]
        public string Avatar { get; set; }

        [Required(ErrorMessage = "Email không được rỗng")]
        [EmailAddress(ErrorMessage = "Định dạng Email sai")]
        public string Email { get; set; }
        
        // 1. đang hoạt động, 2.bị ban
        public int? Status { get; set; }
        public DateTime? Date { get; set; }

        [Required(ErrorMessage = "Địa chỉ không được rỗng")]
        public string Address { get; set; }

        [Required(ErrorMessage = "Số điện thoại không được rỗng")]
        [StringLength(20, ErrorMessage = "Số điện thoại phải ít hơn {1} kí tự và lớn hơn {2} kí tự", MinimumLength = 6)]
        //[RegularExpression("^\\+?\\d+$", ErrorMessage = "Bạn phải nhập số điện thoại")]
        public string PhoneNumber { get; set; }
       
        //[RegularExpression("^\\+?\\d+$", ErrorMessage = "Bạn phải nhập số")]
          [StringLength(20, ErrorMessage = "Số Fax phải ít hơn {1} kí tự và lớn hơn {2} kí tự", MinimumLength = 6)]
         [Required(ErrorMessage = "Số Fax không được rỗng")]
        public string Fax { get; set; }

         [Required(ErrorMessage = "LinkFanpage không được rỗng")]
          public string LinkFanpage { get; set; }
         [Required(ErrorMessage = "Website không được rỗng")]
         public string Website { get; set; }



        public IEnumerable<EntityVideo> DSVideo { get; set; }
      
        public static IEnumerable<EntityBusiness> Index()
        {
            dbVideoDataContext db = new dbVideoDataContext();
            var query = from p in db.EntityBusinesses
                        select p;
            return query.ToList();
        }

        public static BusinessModel LayModel(string US)
        {
            BusinessModel Us = new BusinessModel();
            dbVideoDataContext db = new dbVideoDataContext();
            EntityBusiness tnew = db.EntityBusinesses.Where(p => p.UserName == US).Single();
            Us.UserName = tnew.UserName;
            Us.Pass = tnew.Pass;
            Us.CompanyName = tnew.CompanyName;
            Us.Avatar = tnew.Avatar;  
            Us.Email = tnew.Email; 
            Us.Status = tnew.Status;
            Us.Date = tnew.Date;
            Us.LinkFanpage = tnew.LinkFanpage;
            Us.Address = tnew.Address;
            Us.PhoneNumber = tnew.PhoneNumber;
            Us.Fax = tnew.Fax;
            Us.Website = tnew.website;
            var query = from p in db.EntityVideos
                            where p.IdBusiness  == tnew.UserName  
                            select p;
            Us.DSVideo = query.ToList();
           
       
            return Us;

        }

        public static void Insert(BusinessModel Mtnew)
        {
            dbVideoDataContext db = new dbVideoDataContext();


            EntityBusiness tnew = new EntityBusiness();
            tnew.UserName = Mtnew.UserName;
           Security  ser = new Security();
           tnew.Pass = ser.GetHashPassword(Mtnew.Pass);
          
            tnew.CompanyName = Mtnew.CompanyName;
            tnew.Email = Mtnew.Email;
            tnew.Status = Convert.ToInt32("1");
            tnew.Avatar = Mtnew.Avatar;
            tnew.Date = DateTime.Now;

            tnew.LinkFanpage = Mtnew.LinkFanpage;
            tnew.Address = Mtnew.Address;
            tnew.PhoneNumber = Mtnew.PhoneNumber;
            tnew.Fax = Mtnew.Fax;
            tnew.website = Mtnew.Website;

            db.EntityBusinesses.InsertOnSubmit(tnew);
            db.SubmitChanges();

        }
        public static void Ban(string Id, int l)
        {
            dbVideoDataContext db = new dbVideoDataContext();

            EntityBusiness tnew = db.EntityBusinesses.Where(p => p.UserName == Id).Single();
            tnew.Status = l;

            db.SubmitChanges();

        }
        public static void Delete(string Username)
        {
            dbVideoDataContext db = new dbVideoDataContext();
            EntityBusiness faq = db.EntityBusinesses.Where(p => p.UserName == Username).Single();
            db.EntityBusinesses.DeleteOnSubmit(faq);
            db.SubmitChanges();
        }

        public static string Edit(BusinessModel Mtnew)
        {
            dbVideoDataContext db = new dbVideoDataContext();
            EntityBusiness Faq = db.EntityBusinesses.Where(p => p.UserName == Mtnew.UserName).Single();
            Faq.CompanyName = Mtnew.CompanyName;
            Faq.Email = Mtnew.Email;
            Faq.Address = Mtnew.Address;
            Faq.PhoneNumber = Mtnew.PhoneNumber;
            Faq.Fax = Mtnew.Fax;
            Faq.LinkFanpage = Mtnew.LinkFanpage;
            Faq.website = Mtnew.Website;
            string Avatar = null;
            if (Mtnew.Avatar != null)
            {
                Avatar = Faq.Avatar;
                Faq.Avatar = Mtnew.Avatar;
            }
            db.SubmitChanges();
            return Avatar;
        }
    }
}